avatar
Abbaszadeh

کاربر

  • 1400/09/11
  • 0
  • 111
1400/09/11 |
backend
c-sharp
asp
dot-net
asp-net-core

مشکل در ایجاد رابطه یک به یک بین دو جدول

یک کلاس User دارم :

    public class User
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string NationalCode { get; set; }
        public string MobileNumber { get; set; }
        public string Password { get; set; }
        public DateTime InsertTime { get; set; } = DateTime.Now;
        public DateTime? UpdateTime { get; set; }
        public Account Account { get; set; }
    }

و یک کلاس Account :

        public User User { get; set; }
        public long UserId { get; set; }
        public string AccountNumber { get; set; }
        public decimal Balance { get; set; }
        public DateTime InsertTime { get; set; } = DateTime.Now;
        public DateTime? UpdateTime { get; set; }
    }

این دو جدول رابطه ی یک به یک دارن با هم.

همونطور که میبینید برای ایجاد این رابطه کد زیر در کلاس Account وارد شده :

        public User User { get; set; }
        public long UserId { get; set; }

و کد زیر در کلاس User :

public Account Account { get; set; }

محتوای کلاس DatabaseContext هم به صورت زیر هست :

    public class DatabaseContext:DbContext, IDatabaseContext
    {
        public DatabaseContext(DbContextOptions options) : base(options)
        {

        }
        public DbSet<User> Users { get; set; }
        public DbSet<Account> Accounts { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<User>().HasOne(u => u.Account).WithOne(a => a.User).HasForeignKey<Account>(a => a.UserId);
        }
    }

که بازم همونطور که مشاهده کردین تو این کلاس هم برای ایجاد این رابطه یک به یک این قسمت رو اضافه کردم :

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<User>().HasOne(u => u.Account).WithOne(a => a.User).HasForeignKey<Account>(a => a.UserId);
        }

مشکل اینجاست که زمانی که تو کنسول در ویژوال استودیو دستور Add-Migration رو اجرا میکنم این خطا رو به من میده :

The entity type 'Account' requires a primary key to be defined. If you intended to use a keyless entity type, call 'HasNoKey' in 'OnModelCreating'. For more information on keyless entity types, see https://go.microsoft.com/fwlink/?linkid=2141943.

لطفا راهنماییم کنید. متشکرم


سلام و درود بر شما

برای کلاس Account آیدی بذارید. الان چون Primary Key نداره همچین خطایی رو داره می ده. اگر براش یک Primary Key یا همون آیدی قرار بدید فکر کنم حل بشه دیگه.


کلاس اکانت ایدی نداره باید ایدی قرار بدید



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری